import { Common } from '#miao'
import { getTargetUid } from '../profile/ProfileCommon.js'
import GachaData from './GachaData.js'
import { Button, Character, Player } from '#miao.models'

let Gacha = {
  async detail (e) {
    let msg = e.msg.replace(/#|抽卡|记录|祈愿|分析|池/g, '')
    let game = /星铁/.test(msg) ? 'sr' : 'gs'
    msg = msg.replace(/星铁/, '')
    let type
    if (e.isSr) {
      type = 11
      switch (msg) {
        case 'up':
        case '抽卡':
        case '角色':
        case '抽奖':
          type = 11
          break
        case '常驻':
          type = 1
          break
        case '武器':
        case '光锥':
          type = 12
          break
      }
    } else {
      type = 301
      switch (msg) {
        case 'up':
        case '抽卡':
        case '角色':
        case '抽奖':
          type = 301
          break
        case '常驻':
          type = 200
          break
        case '武器':
          type = 302
          break
        case '集录':
          type = 500
          break
      }
    }
    let uid = e.uid || await getTargetUid(e)
    let qq = e.user.qq
    if (!uid || !qq) {
      return false
    }

    let gacha = GachaData.analyse(qq, uid, type, game)
    if (!gacha) {
      e.reply([`UID:${uid} 本地暂无抽卡信息，请通过【#抽卡帮助】获得绑定帮助...`, new Button(e).gacha()])
      return true
    }

    if (type === 302 || type === 12) type = 'weapon'
    this.reply([await Common.render('gacha/gacha-detail', {
      save_id: uid,
      uid,
      gacha,
      face: Gacha.getFace(uid, game),
      game,
      type,
      elem: e.isSr ? 'sr' : 'hydro'
    }, { e, scale: 1.4, retType: 'base64' }), new Button(e).gacha()])
  },
  async stat (e) {
    let msg = e.msg.replace(/#|统计|分析|池/g, '')
    let game = /星铁/.test(msg) ? 'sr' : 'gs'
    msg = msg.replace(/星铁/, '')
    let type = 'up'
    if (/武器|光锥/.test(msg)) {
      type = 'weapon'
    } else if (/角色/.test(msg)) {
      type = 'char'
    } else if (/常驻/.test(msg)) {
      type = 'normal'
    } else if (/集录/.test(msg)) {
      type = 'mix'
    } else if (/全部/.test(msg)) {
      type = 'all'
    }
    let uid = e.uid || await getTargetUid(e)
    let qq = e.user.qq
    if (!uid || !qq) {
      return false
    }
    let gacha = GachaData.stat(qq, uid, type, game)
    if (!gacha) {
      e.reply([`UID:${uid} 本地暂无抽卡信息，请通过【#抽卡帮助】获得绑定帮助...`, new Button(e).gacha()])
      return true
    }
    e.reply([await Common.render('gacha/gacha-stat', {
      save_id: uid,
      uid,
      gacha,
      face: Gacha.getFace(uid, game),
      game,
      elem: e.isSr ? 'sr' : 'hydro'
    }, { e, scale: 1.4, retType: 'base64' }), new Button(e).gacha()])
  },

  getFace (uid, game) {
    let player = Player.create(uid, game)
    let defaultFaceChar = game === 'gs' ? 10000014 : 1005
    let faceChar = Character.get(player.face || defaultFaceChar, game)
    let imgs = faceChar?.imgs
    if (!imgs?.face) {
      imgs = game === 'gs' ? Character.get(10000079, game).imgs : Character.get(1005, game).imgs
    }
    return {
      banner: imgs?.banner,
      face: imgs?.face,
      qFace: imgs?.qFace,
      name: player.name || '旅行者',
      sign: player.sign,
      level: player.level
    }
  }
}
export default Gacha
